// wtklayout.hpp
//

#ifndef _WTKLAYOUT_HPP
#define _WTKLAYOUT_HPP

#include "wtk/wtkbase.hpp"

namespace wtk
{
  struct SizeRequest;
  struct Allocation;
  class Widget;



  // Layout
  //
  class WTK_API Layout
  {
  public:
    virtual ~Layout ()
    {
      // WTK_TRACE("~Layout(%s)", WTK_DEBUG_NAME(this));

      // [FIXME] should reset owner.layout?
    }

    virtual void add_child ( Widget &child ) = 0;
    virtual void remove_child ( Widget &child ) = 0;

    virtual void clear () = 0;
    
    virtual void size_request ( SizeRequest & ) = 0;
    virtual void size_allocate ( const Allocation & ) = 0;
  };
};

#endif
